/*
 * ==================================================
 * 项目开发者：JerryStark
 * 开发者Email：4771007@qq.com
 * 开发者QQ:4771007
 * 开发范围：web，wap，android,ios,osx or win or linux 应用
 * ==================================================
 */
package RTGame.GetGames;

import RTPower.RTdate;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

/**
 *
 * @author jerry
 */
public class scan_json extends scan_public {

    @Override
    protected Object FormatString(String HttpString) {
        Gson gson = new Gson();
        JsonObject format_data = gson.fromJson(HttpString, JsonObject.class);

        return format_data;
    }

    //以下是json 的常用方法
    /**
     * 获取json中的一个数组列
     *
     * @param pram [0]列key
     */
    public void GetArrayList(String pram) {
        String[] prams = GetParms(pram);

        //从对象中直接读取
        JsonArray get_list = ((JsonObject) TempData).get(prams[0]).getAsJsonArray();
        TempData = get_list;

    }

    /**
     * 获得一个列表中的一条数据
     *
     * @param pram [条id]
     */
    public void GetArrayOneLine(String pram) {
        String[] prams = GetParms(pram);
        JsonObject one_line = ((JsonArray) TempData).get(Integer.parseInt(prams[0])).getAsJsonObject();
        TempData = one_line;
    }

    /**
     * 获得temp 的指定的key对象
     *
     * @param pram [0]key
     */
    public void GetOneKeyToObject(String pram) {
        String[] prams = GetParms(pram);
        JsonObject value = ((JsonObject) TempData).getAsJsonObject(prams[0]);

        TempData = value;
    }

    /**
     * 从temp的数据中提取键值
     *
     * @param pram[0]back 的键名 [1]temp 中数据的键名
     */
    public void GetKey(String pram) {
        String[] prams = GetParms(pram);
        String value = ((JsonObject) TempData).get(prams[1]).getAsString();

        BackData.addProperty(prams[0], value);

    }

    /**
     * 修改一个返回数据key 的值
     * <br>增加新的字符
     *
     * @param pram [0]要修改的key [1]替换的原值,其中###代表老值 [2] 替换成的值
     */
    public void ReplaceBackKeyValue(String pram) {
        String[] prams = GetParms(pram);
        //获得key 的值
        String data_value = BackData.get(prams[0]).getAsString();

        //要替换的值
        String use_value = prams[1];
        //要替换的值里面有###的话就替换一下
        use_value = use_value.replace("###", data_value);

        //要替换成的值
        String rep_value = "";
        if (prams.length > 2) {
            rep_value = prams[2];
        }

        //进行替换
        String new_value = data_value.replace(use_value, rep_value);

        BackData.addProperty(prams[0], new_value);

    }

    /**
     * 修改值,进行添加,在原值的基础上
     *
     * @param pram [0]key [1]新值,###代表原值
     */
    public void AddBackKeyValue(String pram) {
        String[] prams = GetParms(pram);

        //获得key 的值
        String data_value = BackData.get(prams[0]).getAsString();

        String new_value = prams[1];

        new_value = new_value.replace("###", data_value);
        BackData.addProperty(prams[0], new_value);

    }

    /**
     * 把指定的返回值 格式化成时间格式
     * <br>[0]要修改的key [1]新的时间格式
     *
     * @param pram
     */
    public void EditBackFormatTimeToStamp(String pram) {
        String[] prams = GetParms(pram);
        String old_value = BackData.get(prams[0]).getAsString();

        long new_time = RTdate.TimeToStemp(old_value, prams[1]);

        BackData.addProperty(prams[0], new_time);
    }
}
